home *** CD-ROM | disk | FTP | other *** search
/ Aminet 44 / Aminet 44 (2001)(GTI - Schatztruhe)[!][Aug 2001].iso / Aminet / game / patch / WHDIGamesJ-M.lzh / Lionheart.lha / Lionheart / lionheartslave.asm < prev    next >
Assembly Source File  |  1998-01-06  |  5KB  |  230 lines

  1. ;*---------------------------------------------------------------------------
  2. ;  :Program.    lionheartslave.asm
  3. ;  :Contents.    Slave for "Lionheart"
  4. ;  :Author.    Harry
  5. ;  :History.    21.10.1998/18.11.1998/25.11.1998/3.11.2000/21.1.2001
  6. ;  :Requires.    whdload-package :)
  7. ;  :Copyright.    Freeware
  8. ;  :Language.    68000 Assembler
  9. ;  :Translator.    ASM-One 1.25
  10. ;  :To Do.
  11. ;---------------------------------------------------------------------------*
  12.  
  13. crc_v1    = $8DA1    ;MY
  14. crc_v2    = $C2EF    ;OTHER
  15. V_1    = 1
  16. V_2    = 2
  17. fmemsize = $8C000
  18.  
  19.     IFND BARFLY
  20.  
  21.     INCDIR    asm-one:Include2.0/
  22.     INCLUDE LIBRARIES/DOS_LIB.I
  23.     INCLUDE    LIBRARIES/DOS.I
  24.     INCLUDE EXEC/EXEC_LIB.I
  25.     INCLUDE    EXEC/MEMORY.I
  26.     INCLUDE    GRAPHICS/GRAPHICS_LIB.I
  27.     INCLUDE INTUITION/INTUITION_LIB.I
  28.     INCLUDE INTUITION/INTUITION.I
  29.     INCLUDE    OWN/CCRMAKRO
  30.     INCLUDE    own/whdload.i
  31.     
  32.     ELSE
  33.  
  34.         INCDIR    Includes:
  35.         INCLUDE    lvo/dos.i
  36.         INCLUDE    lvo/exec.i
  37.         INCLUDE    whdload.i
  38.  
  39.         BOPT    O+ OG+            ;enable optimizing
  40.         BOPT    ODd- ODe-        ;disable mul optimizing
  41.         BOPT    w4-            ;disable 64k warnings
  42.         SUPER                ;disable supervisor warnings
  43.  
  44.         OUTPUT    wart:a-c/anotherworld/anotherworld.slave
  45.     ENDC
  46.  
  47. ;======================================================================
  48.  
  49. SLBASE        SLAVE_HEADER        ;ws_Security + ws_ID
  50.         dc.w    10        ;ws_Version
  51.         dc.w    WHDLF_Disk!WHDLF_NoError!WHDLF_EmulTrap    ;ws_flags
  52.         dc.l    $94000        ;ws_BaseMemSize
  53.         dc.l    $00        ;ws_ExecInstall
  54.         dc.w    SLStart-SLBASE    ;ws_GameLoader
  55.         dc.w    0        ;ws_CurrentDir
  56.         dc.w    0        ;ws_DontCache
  57.          dc.b    $00        ;debugkey
  58. qkey        dc.b    $5D        ;quitkey
  59.  
  60. fmemloc        DC.L    fmemsize    ;fastmem
  61.         dc.w    slname-SLBASE
  62.         dc.w    slcr-SLBASE
  63.         dc.w    slinst-SLBASE
  64. ***********************************************************************
  65. slname        dc.b    'Lionheart',0
  66. slcr        dc.b    '1993 Thalion',0
  67. slinst        dc.b    'HD-V1.22 Jan. 2001 by Harry',0
  68.     even
  69.  
  70. ;======================================================================
  71.  
  72. ;    DOSCMD    "WDate >T:date"
  73.         dc.b    "$VER: Lionheart_Slave_1.22"
  74. ;    INCBIN    "T:date"
  75.         dc.b    0
  76.         even
  77.  
  78. ;======================================================================
  79. SLStart    ;    A0 = resident loader
  80. ;======================================================================
  81.  
  82.         lea    _RESLOAD(PC),a1
  83.         move.l    a0,(a1)            ;save for later using
  84.  
  85.         move.l    #CACRF_EnableI,d0    ;enable instruction cache
  86.         move.l    d0,d1            ;mask
  87.         jsr    (resload_SetCACR,a0)
  88.  
  89. ;    LEA.L    $800,a0
  90. ;    MOVE.L    #$7E800,D0
  91. ;.CLR    CLR.L    (A0)+
  92. ;    SUBQ.L    #4,D0
  93. ;    BPL.S    .CLR
  94.  
  95.     MOVE.L    _resload(PC),A2
  96.     MOVE.L    #$4000,D0
  97.     MOVEQ.L    #0,D1
  98.     LEA.L    STFILE(PC),A0
  99.     LEA.L    $82000,A1
  100.     JSR    (resload_LoadFileOffset,a2)
  101.  
  102.     MOVE.L    #$4000,D0
  103.     LEA.L    $82000,A0
  104.     jsr    (resload_CRC16,a2)
  105. ;    illegal
  106.  
  107.     LEA.L    VERSION(PC),A0
  108.     CMP.W    #CRC_V1,D0
  109.     BEQ.S    .V1
  110.     CMP.W    #CRC_V2,D0
  111.     BEQ.W    .V2
  112.     BRA.W    NOTSUPP
  113.  
  114. .V1    MOVE.B    #V_1,(A0)
  115.     bra.s    .VA
  116.  
  117. .V2    MOVE.B    #V_2,(A0)
  118. .VA
  119.  
  120.     MOVE.L    #$10000,D0        ;LEN
  121.     LEA.L    $80000,A1        ;ADDY
  122.     LEA.L    OSMNAME(PC),A0        ;FILENAME
  123.     move.l    _RESLOAD(PC),a2
  124.     jsr    (resload_LoadFileDecrunch,a2)
  125.  
  126. .xxx
  127. ;    btst    #6,$bfe001
  128. ;    BNE.S    .xxx
  129.  
  130.  
  131.     move.l    fmemloc(PC),$80000+36
  132.     move.l    #fmemsize,$80000+40
  133.  
  134.     MOVE.L    _RESLOAD(PC),A0
  135.     LEA.L    SLBASE(PC),A1
  136.     JSR    $80000
  137.     MOVE.W    #0,SR
  138.  
  139.     SUB.L    A1,A1
  140.     MOVE.L    4.W,A6
  141.     CLR.W    $128(A6)        ;clear attnflags due many vbr-
  142.                     ;and cacr-accesses on 68010+
  143.  
  144.     JSR    _LVOFindTask(A6)
  145.     MOVE.L    D0,A1
  146. ;    CLR.L    $AC(A1)
  147.     CLR.L    $98(A1)
  148.  
  149.     MOVE.L    $4.W,A6
  150.     MOVEQ.L    #0,D0
  151.     LEA    DOSNAM(PC),A1
  152.     JSR    _LVOOpenLibrary(A6)
  153.     MOVE.L    D0,A6
  154.  
  155.     LEA.L    STFILE(PC),A0
  156.     MOVE.L    A0,D1
  157.     JSR    _LVOLoadSeg(A6)
  158.     LSL.L    #2,D0
  159.     MOVE.L    D0,A1
  160.     ADDQ.L    #4,A1
  161.  
  162. ;.YYY    bra    .YYY
  163.  
  164.     MOVE.W    #$6012,$222(A1)        ;SKIP MEMLISTSTUFF
  165.     MOVE.B    #$51,$236(A1)        ;HM... FASTMEM?
  166.  
  167.     MOVE.B    VERSION(PC),D0
  168.     CMP.B    #V_1,D0
  169.     BNE.S    .PV2
  170.                     ;PATCHES SPECIFIC TO VERSION 1
  171.     MOVE.W    #$C944,$246(A1)        ;SKIP VBR-MOVE
  172.     MOVE.W    #$C944,$11E2(A1)    ;SKIP DISK-DIR-CHECK
  173.  
  174.     MOVE.L    #$1A1C6,D0        ;REMOVE ACCESS FAULT
  175.     MOVE.W    #$4EB9,(A1,D0.L)
  176.     PEA    CORRAF(PC)
  177.     MOVE.L    (A7)+,2(A1,D0.L)    
  178.     CLR.W    $A(A1,D0.L)        ;make lea (a0,d0._W_),a0
  179.  
  180.     BRA.S    .PVE
  181.  
  182. .PV2                    ;PATCHES SPECIFIC TO VERSION 2
  183.     MOVE.W    #$C944,$124E(A1)    ;SKIP DISK-DIR-CHECK
  184.  
  185.     MOVE.L    #$1A25C,D0        ;REMOVE ACCESS FAULT
  186.     MOVE.W    #$4EB9,(A1,D0.L)
  187.     PEA    CORRAF(PC)
  188.     MOVE.L    (A7)+,2(A1,D0.L)    
  189.     CLR.W    $A(A1,D0.L)        ;make lea (a0,d0._W_),a0
  190. .PVE
  191.     
  192.     SUB.L    A0,A0            ;NO COMMANDLINEARGUMENTS
  193.     MOVEQ.L    #0,D0
  194.  
  195.     IFEQ    1            ;FORCE NMI FOR HRTMON
  196.     MOVE.W    #$2700,SR
  197.     MOVE.L    #$007C0020,-(A7)
  198.     PEA    .CONT(PC)
  199.     MOVE.W    #$2000,-(A7)
  200.     JMP    $68FCEF4C
  201.     ENDC
  202.  
  203. .CONT    JSR    (A1)
  204.  
  205.     ILLEGAL
  206.  
  207.  
  208. CORRAF
  209.     MOVEQ.L    #0,D0
  210.     MOVE.W    $1C(A5),D0
  211.     AND.W    #$FFF,D0
  212.     RTS
  213.  
  214.  
  215. version    dc.w    0        ;version of disks
  216. _RESLOAD    dc.l    0    ;address of resident loader
  217. OSMNAME    DC.B    'OSEMUMODULE80000.BIN',0
  218.     EVEN
  219. STFILE    DC.B    'lionheart',0
  220.     EVEN
  221. DOSNAM    DC.B    'dos.library',0
  222.     EVEN
  223.  
  224. NOTSUPP
  225.     PEA    TDREASON_WRONGVER
  226.     move.l    (_resload,pc),-(a7)
  227.     add.l    #resload_Abort,(a7)
  228.     rts
  229.  
  230.